package org.example.serializer;

import org.example.spi.SpiLoader;

import java.util.HashMap;
import java.util.Map;

public class SerializerFactory {

    /**
     * 序列化器映射（用于实现单例）
     */
    private static final Map<String, Serializer> KEY_SERIALIZER_MAP = new HashMap<>();

    // 静态代码块初始化所有序列化器实例（仅在类加载时执行一次）
//    static {
//        KEY_SERIALIZER_MAP.put(SerializerKeys.JDK, new JdkSerializer());
//        KEY_SERIALIZER_MAP.put(SerializerKeys.JSON, new JsonSerializer());
//        KEY_SERIALIZER_MAP.put(SerializerKeys.KRYO, new KryoSerializer());
//        KEY_SERIALIZER_MAP.put(SerializerKeys.HESSIAN, new HessianSerializer());
//    }
    static {
        SpiLoader.load(Serializer.class);
    }

    /**
     * 默认序列化器（例如默认使用JDK序列化器）
     */
//    private static final Serializer DEFAULT_SERIALIZER = KEY_SERIALIZER_MAP.get(SerializerKeys.JDK);

    /**
     * 根据key获取序列化器实例
     * @param key 序列化器标识（如"jdk"、"json"）
     * @return 对应的序列化器实例（若不存在则返回默认实例）
     */
    public static Serializer getInstance(String key) {
        return SpiLoader.getInstance(Serializer.class, key);
    }

}